下面将向您介绍如何在 Docker 容器中运行极狐GitLab Runner。
Docker 引擎版本兼容性一般来说,Docker Engine 的版本和极狐GitLab Runner 容器镜像的版本不需要匹配。极狐GitLab Runner 镜像应该向后和向前兼容。然而,为确保您拥有最新的功能和安全更新,您应该使用最新的稳定 Docker 引擎版本。
一般极狐GitLab Runner Docker 镜像使用极狐GitLab Runner Docker 镜像(基于 Ubuntu 或 Alpine Linux)被设计为标准 gitlab-runner 命令周围的包装器,就像极狐GitLab Runner 直接安装在主机上一样。
一般规则是每个极狐GitLab Runner 命令通常会被执行为:
gitlab-runner可以使用以下命令执行:
docker run gitlab/gitlab-runner例如,可以执行以下命令获取最高级别的极狐GitLab Runner 的帮助信息:
docker run --rm -t -i gitlab/gitlab-runner --helpNAME:gitlab-runner - a GitLab RunnerUSAGE:gitlab-runner [global options] command [command options] [arguments...]VERSION:15.11.0 (436955cb)(...)简而言之,命令的 gitlab-runner 部分由docker run [docker options] gitlab/gitlab-runner 替代,剩余部分保持与注册文档中描述的内容相一致。唯一区别是 gitlab-runner 命令是在 Docker 容器中执行的。
安装 Docker 镜像并启动容器开始之前,请确保已经安装 Docker。
如果想在 Docker 容器内运行 gitlab-runner,您需要确保重启容器时配置没有丢失。为此,以下描述两个选项:
请阅读 FAQ,它介绍了您在使用极狐GitLab Runner 时最可能遇到的问题。
如果使用 session_server,您也需要通过向 docker run 命令中添加 -p 8093:8093 暴露端口 8093。 如果您想通过 Docker Machine 执行器使用弹性伸缩功能,您还需要挂载 Docker Machine /root/.docker/machine 存储路径: 通过为系统卷挂载添加 -v /srv/gitlab-runner/docker-machine-config:/root/.docker/machine。 通过为 Docker 命名的卷添加 -v docker-machine-config:/root/.docker/machine。note 此设置将 Docker Daemon 的完全控制权委托给每个极狐GitLab Runner 容器。如果您在还运行其他负载的 Docker Daemon 中运行极狐GitLab Runner,隔离保证会失效。选项一:使用本地系统卷挂载,启动 Runner 容器以下示例使用挂载到 gitlab-runner 容器的配置卷的本地系统。这个卷用于配置资源和其他资源。
docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest note 在 macOS 上,使用 /Users/Shared 而不是 /srv。选项二:使用 Docker 卷启动 Runner 容器在这个例子中,您可以使用配置容器挂载您的自定义数据卷。
创建 Docker 卷:
docker volume create gitlab-runner-config使用刚创建的卷启动极狐GitLab Runner 容器:
docker run -d --name gitlab-runner --restart always \-v /var/run/docker.sock:/var/run/docker.sock \-v gitlab-runner-config:/etc/gitlab-runner \gitlab/gitlab-runner:latestnote 如果您想设置容器的时区,请在 docker run 命令中使用 --env TZ= 标记。 note 对于符合 FIPS 的极狐GitLab Runner 镜像,您需要基于 redhat/ubi8 使用 gitlab/gitlab-runner:ubi-fips 标签。注册 Runner最后一步是注册新的 Runner。极狐GitLab Runner 容器在注册之前不会处理任何作业。
升级配置如果您更改了 config.toml 中的配置,您可能需要重启 Runner 使更改生效。请确保重启整个容器,而不是使用 gitlab-runner restart 命令:
docker restart gitlab-runner升级版本拉取最新版本(或者特定标签):
docker pull gitlab/gitlab-runner:latest停止并移除现存的容器:
docker stop gitlab-runner && docker rm gitlab-runner像最开始那样启动容器:
docker run -d --name gitlab-runner --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ gitlab/gitlab-runner:latest note 您挂载数据卷时使用的方法需要和您最开始使用的方法一致(-v /srv/gitlab-runner/config:/etc/gitlab-runner 或 --volumes-from gitlab-runner-config)。读取极狐GitLab Runner 日志当极狐GitLab Runner 作为前台任务(不论是本地安装的二进制文件或 Docker 容器内部)被启动时,日志会被打印为标准输出。当极狐GitLab Runner 作为系统服务被启动时(例如,使用 Systemd),大多数情况下的日志都是通过 Syslog 或其他系统记录机制进行记录的。
极狐GitLab Runner 作为基于服务的 Docker 被启动,因为 gitlab-runner ... 命令是容器的主要进程,可以使用 docker logs 命令读取日志。
例如,如果使用以下命令启动极狐GitLab Runner:
docker run -d --name gitlab-runner --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ gitlab/gitlab-runner:latest您可以使用以下命令获取日志:
docker logs gitlab-runner其中 gitlab-runner 是容器的名称,可以在第一个命令中输入 --name gitlab-runner 进行设置。
关于处理容器日志的